package server.business.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.CacheNamespace;
import server.main.config.cache.MybatisPlusRedisCache;
import server.business.pojo.OverallBlood;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import java.util.List;

/**
* @author Galaxy
* @description 针对表【overall_blood(整体输血信息表)】的数据库操作Mapper
* @createDate 2022-11-08 12:46:24
* @Entity server.business.pojo.OverallBlood
*/
@Mapper
//@CacheNamespace(implementation = MybatisPlusRedisCache.class)
public interface OverallBloodMapper extends BaseMapper<OverallBlood> {




    //*************************************zy*************************start
    /**
     * 根据病历号查询是否允许退血
     *
     * @param number 患者的病历号
     * @return 返回整体输血信息
     */
    List<OverallBlood> findIsAllowBackByNumber(Integer number);

    /**
     * 根据输血申请单号更改整体输血信息表中的状态和单号
     *
     * @param transfusionNumber 输血申请单号
     * @param condition         状态
     * @param number            患者退血信息表中的退血单号
     */
    void updateConditionAndNumberByTransfusionNumber(String transfusionNumber, String condition, String number);

    /**
     * 根据输血申请单号更改整体输血信息表中的状态
     *
     * @param transfusionNumber 输血申请单号
     * @param condition         状态
     */
    void updateConditionByTransfusionNumber(String transfusionNumber, String condition);

    /**
     * 根据患者病历号和患者输血申请单号修改是否允许退血
     *
     * @param number        患者病历号
     * @param transfusion   患者输血申请单号
     * @param isAllowedBack 是否允许退血（1表示允许，0表示不允许）
     */
    void updateIsAllowedBackByNumberAndTransfusion(Integer number, String transfusion, Integer isAllowedBack);

    /**
     * 根据退血单号设置退血驳回原因
     *
     * @param transfusionNumber 输血单号
     * @param rejectInformation 退血驳回原因
     */
    void setRejectInformationByTransfusionNumber(String transfusionNumber, String rejectInformation);

    /**
     * 根据血液状态获取血液信息
     *
     * @param condition 血液状态
     * @return 返回退血审核通过的血液信息
     */
    List<OverallBlood> getBloodInformationByCondition(String condition);

    /**
     * 根据退血单号设置血液状态
     *
     * @param number    退血单号
     * @param condition 血液状态
     */
    void setConditionByNumber(String number, String condition);

    /**
     * 根据病历号和输血单号查询输血信息
     *
     * @param number      病历号
     * @param transfusion 输血单号
     * @return 返回输血信息
     */
    OverallBlood findByNumberAndTransfusion(Integer number, String transfusion);

    /**
     * 根据输血单号修改是否允许退血
     *
     * @param transfusion   输血单号
     * @param isAllowedBack 是否允许退血（1表示允许，0表示不允许）
     */
    void updateIsAllowedBackByTransfusion(String transfusion, Integer isAllowedBack);



    //*************************************zy*************************end
}




